package graph;

import java.util.LinkedList;
import java.util.Queue;

/**
 * @author songZiHao
 * @version 1.0.0
 * @ClassName graph.Graph.java
 * @Description TODO
 * @createTime 2020年09月01日 20:05:00
 */
public class Graph {
	//顶点数量
	private final int v;
	//边的数量
	private int e;
	//邻接表
	private LinkedList<Integer>[] adj;

	public Graph(int v) {
		this.v = v;
		this.e = 0;
		this.adj = new LinkedList[v];
		for (int i = 0; i < adj.length; i++) {
			adj[i]=new LinkedList<>();
		}
	}

	//获取顶点数目
	public int v(){
		return v;
	}

	//获取边数目
	public int e(){
		return e;
	}

	//向图中添加一条边 v-w
	public void addEdge(int v,int w){
		//在无向图中，边是没有方向的，所以该边既可以说是从v到w，也可以说w到v的边，因此，需要让w出现在v在邻接表中，并且还要让v出现在w的邻接表中
		adj[v].add(w);
		adj[w].add(v);
		e++;
	}

	public LinkedList<Integer> adj(int v){
		return adj[v];
	}
}
